package com.spring.demo.domain;

import java.io.Serializable;

import org.joda.time.DateTime;

public interface AuditablePoEntity<ID extends Serializable> extends PoEntity<ID> {
	/**
	 * Returns the user who created this entity.
	 * 
	 * @return the createdBy
	 */
	String getCreatedBy();

	/**
	 * Sets the user who created this entity.
	 * 
	 * @param createdBy
	 *            the creating entity to set
	 */
	void setCreatedBy(final String createdBy);

	/**
	 * Returns the creation date of the entity.
	 * 
	 * @return the createdDate
	 */
	DateTime getCreatedDate();

	/**
	 * Sets the creation date of the entity.
	 * 
	 * @param creationDate
	 *            the creation date to set
	 */
	void setCreatedDate(final DateTime creationDate);

	/**
	 * Returns the user who modified the entity lastly.
	 * 
	 * @return the lastModifiedBy
	 */
	String getLastModifiedBy();

	/**
	 * Sets the user who modified the entity lastly.
	 * 
	 * @param lastModifiedBy
	 *            the last modifying entity to set
	 */
	void setLastModifiedBy(final String lastModifiedBy);

	/**
	 * Returns the date of the last modification.
	 * 
	 * @return the lastModifiedDate
	 */
	DateTime getLastModifiedDate();

	/**
	 * Sets the date of the last modification.
	 * 
	 * @param lastModifiedDate
	 *            the date of the last modification to set
	 */
	void setLastModifiedDate(final DateTime lastModifiedDate);
}
